/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appbenedictoxvi;

import java.util.ArrayList;

/**
 *
 * @author JGAMEZ
 */
public class AdmProveedor {
    
    
    private ArrayList<Proveedor> proveedores;
    
    Validaciones objVal = new Validaciones();
        
    public AdmProveedor() {
        proveedores = new ArrayList<Proveedor>();
    }
    
    public ArrayList<Proveedor> getProveedor(){
        return proveedores;
    }

    public void registrarproveedorempresa(String codigo1, String ruc1, String razonsocial1, String direccion1) throws BusinessException {
        validardatos(codigo1, ruc1, razonsocial1, direccion1);
        Proveedor proveedor = new ProveedorEmpresa(codigo1, ruc1, razonsocial1, direccion1);
        proveedores.add(proveedor);
        
    }
    

    Proveedor buscarProveedorEmpresa(String codigo2) {
          for (Proveedor proveedor : proveedores) {
            if (proveedor.getCodigo().equals(codigo2)) {
                return proveedor;
            }
        }
        return null;
    }
    
    

    public void registrarproveedorpersona(String codigo1, String ruc1, String dni1, String nombres1, String apellidos1, String direccion1) throws BusinessException {
        
        validardatosPersona(codigo1, ruc1, dni1, nombres1, apellidos1, direccion1);
        Proveedor proveedor  = new ProveedorPersona(codigo1, ruc1, dni1, nombres1, apellidos1, direccion1);
        proveedores.add(proveedor);
    }

    Proveedor buscarProveedorPersona(String codigo2) {
          for (Proveedor proveedor : proveedores) {
            if (proveedor.getCodigo().equals(codigo2)) {
                return proveedor;
            }
        }
        return null;
    }
    
    //Validar datos para Proveedor Empresa
     private void validardatos(String codigo1, String ruc1, String razonsocial1, String direccion1) throws BusinessException {
        validardatosmandatorios(codigo1,ruc1,razonsocial1,direccion1);
        validarduplicidad(codigo1);
    }
     
     //Validar datos para Proveedor Persona
     
     private void validardatosPersona(String codigo1, String ruc1, String dni1, String nombres1, String apellidos1, String direccion1) throws BusinessException{
        validardatosmandatoriosPersona(codigo1, ruc1, dni1, nombres1, apellidos1, direccion1);
        validarduplicidadPersona(codigo1);
     }

     
     
     
    private void validardatosmandatorios(String codigo1, String ruc1, String razonsocial1, String direccion1) throws BusinessException {
         String mensaje="";
        if(codigo1==null || codigo1.isEmpty())
            mensaje+= "\nCodigo no puede ser vacio";
        if(ruc1==null || ruc1.isEmpty())
           mensaje += "\nRuc no puede ser vacio";
        if(razonsocial1==null || razonsocial1.isEmpty())
           mensaje += "\nRazon Social no puede ser vacio";
        if(direccion1==null || direccion1.isEmpty())
           mensaje += "\nDireccion no puede ser vacio";
        
       //si hay mensaje que mostrar,lanzar la excepcion
        if (!mensaje.isEmpty())
           throw new BusinessException(mensaje);
    }

    private void validarduplicidad(String codigo1) throws BusinessException {
        Proveedor proveedor = buscarProveedorEmpresa(codigo1);
            if (proveedor !=null){
            String mensaje= "Código "+codigo1 + " duplicado";
            throw new BusinessException(mensaje);
    }

  

   
    
    }

    private void validardatosmandatoriosPersona(String codigo1, String ruc1, String dni1, String nombres1, String apellidos1, String direccion1) throws BusinessException {
         String mensaje="";
        if (!objVal.isSet(codigo1)) {
            mensaje += "Codigo no puede ser vacio o nulo";
        }
         if (!objVal.isSet(ruc1)) {
            mensaje += "Apellodo Paterno no puede ser vacio o nulo";
        }
        if (!objVal.isSet(dni1)) {
            mensaje += "Apellido Materno no puede ser vacio o nulo";
        }
        if (!objVal.isSet(nombres1)) {
            mensaje += "Apellido Materno no puede ser vacio o nulo";
        }
        if (!objVal.isSet(apellidos1)) {
            mensaje += "Apellido Materno no puede ser vacio o nulo";
        }
        if (!objVal.isSet(direccion1)) {
            mensaje += "Apellido Materno no puede ser vacio o nulo";
        }
               
        if (objVal.isSet(mensaje)) {
            throw new BusinessException(mensaje);
        }
    }

    private void validarduplicidadPersona(String codigo1) throws BusinessException {
        Proveedor proveedor = buscarProveedorEmpresa(codigo1);
            if (proveedor !=null){
            String mensaje= "Código "+codigo1 + " duplicado";
            throw new BusinessException(mensaje);
              }
     }

    public void eliminarProveedorEmpresa(String codigo) throws BusinessException {
        Proveedor proveedor = buscarProveedorEmpresa(codigo);
        if (codigo != null) {
            proveedores.remove(proveedor);
        } else {
            validarEliminacionDeUnProveedorEmpresaInexistente(codigo);
        }
    }

    
    
    
    public void validarEliminacionDeUnProveedorEmpresaInexistente(String codigo1) throws BusinessException {
      for (Proveedor proveedor : proveedores)
          if (proveedor.getCodigo().equals(codigo1)){
          String mensaje= "Código "+codigo1 + " Existe No se Puede Borrar";
          throw new BusinessException(mensaje);
          }
    
    }
    
    
    
}








